package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main(){
	var a string
	fmt.Scanln(&a)
	str1 := ""
	num := ""
	_,e := strconv.Atoi(a)
	if e == nil {			//1.以类型转换判断全为数字的整型数据，转换成功说明是整型数据，未成功继续下面分支
		fmt.Println("这是一个整数")
	} else if strings.HasPrefix(a,"0x") || strings.HasPrefix(a,"0b") || strings.HasPrefix(a,"0o"){
		//2.如果字符是以"0x","0b","0o"开头，则从索引为2的字符开始将剩下的字符赋值给str1,并设置相应的num值
		str1 = a[2:]
		if a[:2]=="0x" {
			num = "1234567890abcdefABCDEF"
		}else if a[:2]=="0b" {
			num = "10"
		}else{
			num = "1234567"
		}
	}else {  //3.不满足条件，则说明不是整数
		fmt.Println("不是整数")
	}

	//4.声明n为记录循环次数的变量
	n := 0
	//5.遍历str1中的字符，将其逐一与num里的内容做比较，若每一个字符都包含在num中则正常退出循环；若有一个字符不被包含则输出“不是整数”，直接退出循环。
	for _,i := range str1{
		n = n + 1
		p := string(i)
		if strings.Count(num,p) == 0{ //6.通过查看字符在字符串中出现的次数来证明字符是否包含于num中，字符出现次数为0，说明不被包含则证明不是整数，退出循环。
			fmt.Println("不是整数")
			break
		}else {
			continue
		}
	}
	//7.如果循环的次数是字符串长度-2说明这是个整数
	if n==len(a)-2 {
		fmt.Println("这是整数")
	}

}
